﻿using Basic.HrModel.Msg;
using Basic.HrRemoteModel.Msg.Model;
using WeDonekRpc.Model;

namespace Basic.HrCollect
{
    public interface IEmpMsgListCollect
    {
        TimeOutMsg[] GetTimeOuts ();
        void Adds ( MsgAdd add );
        Result Get<Result> ( long id ) where Result : class;
        Result Get<Result> ( string linkType, long linkPk, string tag ) where Result : class, new();
        long[] GetWaitToVoidMsgId ( ToVoidItem[] items );

        long[] GetMsgId ( MsgItem[] items );
        Result[] Query<Result> ( MsgQuery query, IBasicPage paging, out int count ) where Result : class;
        bool SetAlreadyDo ( EmpMsgDto msg );
        bool SetAlreadyRead ( EmpMsgDto msg );
        void SetAlreadyRead ( long[] ids );
        void ToVoidMsg ( long[] msgId );
        void ToVoidMsg ( string linkType, long linkPk, string tag );
        void Save ( BatchOpt opt );
        Dictionary<string, int> GetMsgTotal ( MsgGetArg arg );
    }
}